package com.ym.b2b.product.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;

import com.ym.b2b.product.sqlbean.EmBProduct;
import com.zc.commons.base.Page;

public interface ProductDao {

    /**
     * @Title: searchPageProduct
     * @Description: 前台系统商品分页列表
     */
    public Page<EmBProduct> searchPageProduct(EmBProduct emBProduct, Page<EmBProduct> page) throws DataAccessException;

    /**
     * @Title: searchPageProduct
     * @Description: 后台系统商品分页列表
     */
    public Page<EmBProduct> searchManagerProductList(EmBProduct emBProduct, Page<EmBProduct> page)
                                                                                                  throws DataAccessException;

    public Long searchPageProductNum(EmBProduct emBProduct) throws DataAccessException;

    /**
     * @Title: showProductDetail
     * @Description: 前端的获取商品详情 带了价格转换等规则结果
     */
    public EmBProduct showProductDetail(EmBProduct emBProduct) throws DataAccessException;

    /**
     * @Title: insertEmBProduct
     * @Description: 新增商品
     */
    public void insertEmBProduct(EmBProduct emBProduct) throws DataAccessException;

    /**
     * @Description: 获取商品简单信息 按需要 加入
     */
    public EmBProduct showProductDetailConcise(EmBProduct emBProduct) throws DataAccessException;

    /**
     * @Title: deleteEmBProduct
     * @Description: 删除商品
     */
    void deleteEmBProduct(EmBProduct emBProduct) throws DataAccessException;

    /**
     * 获取商品列表 不分页
     */
    List<EmBProduct> searchEmBProduct(EmBProduct emBProduct) throws DataAccessException;

    /**
     * 不做任何转换的 商品详情获取
     * 
     * @Title: searchAllProductDetail
     */
    EmBProduct searchAllProductDetail(EmBProduct emBProduct) throws DataAccessException;

    /**
     * @Title: updateEmBProduct
     * @Description: 修改商品
     */
    void updateEmBProduct(EmBProduct emBProduct) throws DataAccessException;

    /**
     * 简洁字段的 商品列表通用搜索
     * 
     * @Title: searchSimpleProductList
     * @Description: TODO
     */
    List<EmBProduct> searchSimpleProductList(EmBProduct emBProduct) throws DataAccessException;

    /**
     * 是否在我的搜藏
     * 
     * @Title: isInFavolite
     * @Description: TODO
     * @Param @param productCode
     * @Param @return
     * @Param @throws DataAccessException
     * @Return Integer
     * @Throws
     */
    Integer isInFavolite(String productCode) throws DataAccessException;
    
    /**
     * 判断是否存在该产品(药联对接,误操作会导致两边productCode对不上)
     * @param productCode
     * @return
     * @throws DataAccessException
     */
    Integer hasProduct(String productCode) throws DataAccessException;
}
